package com.example.mapper;

import com.example.domain.entity.User;
import com.example.domain.po.UserPO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author hlc
 * @description 针对表【sys_user(用户表)】的数据库操作Mapper
 * @createDate 2022-10-14 19:19:44
 * @Entity com.example.domain.entity.User
 */
@Repository
public interface UserMapper {
    /**
     * 通过用户名查询用户信息
     *
     * @param userName 用户名
     * @return UserPO
     */
    UserPO selectByUserName(@Param("userName") String userName);

    /**
     * 添加用户
     *
     * @param user 用户
     * @return id
     */
    Integer insertUser(User user);

    /**
     * 通过用户名和邮箱查询用户信息
     *
     * @param userName 用户名
     * @param email    邮箱
     * @return UserPO
     */
    UserPO selectByUserNameAndEmail(@Param("userName") String userName, @Param("email") String email);

    /**
     * 修改密码
     *
     * @param user 用户信息
     */
    void updateByUserName(User user);

    /**
     * 查询所有用户
     *
     * @return 用户集合
     */
    List<UserPO> selectAll();

    /**
     * 删除用户
     *
     * @param id 用户id
     */
    void deleteById(@Param("id") Long id);

    /**
     * 批量删除用户
     *
     * @param ids 用户id数组
     */
    void deleteByIdList(@Param("ids") Long[] ids);
}
